<?
include_once("Persona.php");
include_once("Domicilio.php");
include_once("Taller.php");
include_once("Curriculum.php");
include_once("EstudioLicenciatura.php");
class Aspirante extends Persona
{
	var $_numeroCuenta;
	var $_idPersona;
	var $_idDomicilio; 
	var $_password;
	var $_estadoCivil;
	var $_sexo;
	var $_fechaNacimiento; 
	var $_ofertas;
	var $_boletin;
	var $_noBoletinarse;
	var $_noTaller;
	var $_generacion;
	var $_planEstudios;
	
	function Loguearse($numeroCuenta, $password)
	{
		$db = new DB();
		$db->Conectar();
		/*
		$sql = "SELECT *, TO_CHAR(fechanacimiento, 'YYYY') AS anio 
				FROM aspirante a, curriculum c WHERE a.nocta ='". $numeroCuenta ."' 
				AND a.password ='". $password ."' AND c.nocta = a.nocta
				AND c.estatuscurriculum <> 'S'
				"; 
		*/
		$sql = "SELECT *, TO_CHAR(fechanacimiento, 'YYYY') AS anio
                                FROM aspirante a, curriculum c 
				WHERE a.nocta ='". $numeroCuenta ."'
                                AND a.password ='". $password ."' 
				AND c.nocta LIKE a.nocta
                                AND c.estatuscurriculum <> 'S'
                                ";
		//echo $sql;
		$db->Query($sql);
		$db->Cerrar();
		if($db->NumLineas() == 1)
		{
			$row = $db->GetArray(0);
			return $row["nocta"]."-".$row["idpersona"]."-".$row["iddomicilio"]."-".$row["anio"]."-".$row["notalleres"]."-".$row["noboletinarse"];
		}
		else
			return 0;
	}
	
	function ObtenerDatosPersonales($idAspirante)
	{
		$db = new DB();
		$db->Conectar();
		$sql = "SELECT *, TO_CHAR(fechanacimiento,'DD-MM-YYYY') as fechanacimiento 
				FROM aspirante a, persona p, domicilio d 
				WHERE nocta = '". $idAspirante ."'
				AND a.idpersona = p.idpersona AND
				a.iddomicilio = d.iddomicilio
				"; 
		$db->Query($sql);
		$rs = $db->GetArray(0);
		$db->Cerrar();
		$this->_numeroCuenta = $rs["nocta"];
		$this->_idPersona = $rs["idpersona"];
		$this->_idDomicilio = $rs["iddomicilio"]; 
		$this->_password = $rs["password"];
		$this->_estadoCivil = $rs["estadocivil"];
		$this->_sexo = $rs["sexo"];
		$this->_fechaNacimiento = $rs["fechanacimiento"]; 
		$this->_ofertas = $rs["ofertasemail"];
		$this->_boletin = $rs["boletinarse"];
		$this->_noBoletinarse = $rs["noboletinarse"];
		$this->_noTaller = $rs["notalleres"];
		$this->_generacion = $rs["generacion"];
		$this->_planEstudios = $rs["plan"];
		$this->ObtenerDatosPersona($rs["idpersona"]);
	}
	
	function RecuperarPassword($numCuenta, $fechaNac, $email, $password)
	{
		$db = new DB();
		$db->Conectar();
		$sql = "SELECT * FROM aspirante a, persona p WHERE a.nocta ='". $numCuenta ."' 
				AND a.fechanacimiento ='". $fechaNac ."' AND a.idpersona = p.idpersona
				AND p.correoelectronico = '". $email ."'
				"; 
		$db->Query($sql);
		if($db->NumLineas() == 1)
		{
			if($this->CambiarPassword($numCuenta, $password) > 0)
				return true;
			else
				return false;
		}
		else
			return false;
	}
	
	function CambiarPassword($numCuenta, $password)
	{
		$db = new DB();
		$db->Conectar();
		$sql = 	"
				UPDATE aspirante SET
				password = '". trim($password) ."' 
				WHERE nocta = '". $numCuenta ."'"
				;
		$db->Query($sql);
		$db->Cerrar();
		return $db->FilasAfectadas();
	}
	
	function GuardarDatosPersonales(&$dom, $email, $edocivil, 
					$boletin, $ofertas, $idAspirante, $idPersona, $idDomicilio)
	{
		if($ofertas == "") $ofertas = "false";
		if($boletin == "") $boletin = "false";
		$filasAfectadas = $this->ModificaEmail($idPersona, $email);
		if($filasAfectadas == 1)
		{
			$domicilio = new Domicilio();
			$domicilio->ActualizarDomicilio($idDomicilio, $dom->_estado, 
							$dom->_calleNumero, $dom->_colonia, $dom->_delMun, $dom->_cp, 
							$dom->_ciudad, $dom->_zona, $dom->_tel1, $dom->_tel2, "", "", "");
			$sql = "
					UPDATE aspirante
					SET
					estadocivil = '". $edocivil ."', 
					ofertasemail = '". $ofertas ."',
					boletinarse = '". $boletin ."' 
					WHERE
					nocta = '". $idAspirante ."'"
					;
			$db = new DB();
			$db->Conectar();
			$db->Query($sql);
			$db->Cerrar();
			
			return $db->FilasAfectadas();
		}
		else
			return -99;
	}
	
	function ValidarExisteAspirante($numCuenta, $fechaNac)
	{
		$db = new DB();
		$db->Conectar();
		$sql = "SELECT * FROM aspirante a WHERE a.nocta ='". $numCuenta ."'"; 
		$db->Query($sql);
		$db->Cerrar();
		return $db->NumLineas();
	}
	
	function ActivarAspirante($numCuenta, $fechaNac,  $password, $email)
	{
		if($this->ValidarExisteAspirante($numCuenta, $fechaNac) == 0)
		{
			$db = new DB();
			$db->Conectar();
			/*$sql = "SELECT * FROM numeros_cuenta WHERE nocta LIKE '". $numCuenta ."' AND
						fechanacimiento = '". $fechaNac ."'";
			*/
			$sql = "SELECT * FROM numeros_cuenta WHERE nocta LIKE '". $numCuenta ."';";
			
			$db->Query($sql);
			if($db->NumLineas() == 1)
			{
				$sql = "UPDATE numeros_cuenta SET fechanacimiento = '". $fechaNac ."' WHERE nocta LIKE '". $numCuenta ."';";
				$db->Query($sql);
				
				$sql = "SELECT * FROM numeros_cuenta WHERE nocta LIKE '". $numCuenta ."';";
				$db->Query($sql);

				$row = $db->GetArray(0);
				$db->Cerrar();

				$idPersona = $this->AltaPersona(
						$row["apellidopaterno"], $row["apellidomaterno"], $row["nombre"], $email );
				if($idPersona > 0)
				{
					$dom = new Domicilio();
					$idDomicilio = $dom->AltaDomicilio("", "", "", 0, "", "", 2, "", "", "", "", "");
					if($idDomicilio > 0)
					{
						$sql = 	"INSERT INTO aspirante (nocta, idpersona, iddomicilio,
								password, estadocivil, sexo, fechanacimiento, generacion, plan)
								VALUES('". $numCuenta ."', ". $idPersona .", ". $idDomicilio .",
								'". $password ."', '', '". $row["sexo"] ."', '". $fechaNac ."',
								'". $row["generacion"] ."','". $row["plan"] ."')";
						$db->Conectar();
						$db->Query($sql);
						$db->Cerrar();
						if($db->FilasAfectadas() > 0 )
						{
							$curr = new Curriculum();
							$idCurriculum = $curr->InsertarCurriculum($numCuenta);
							if($idCurriculum > 0)
							{
								if($row["carrera"] != "")
								{
									$est = new EstudioLicenciatura();
									$est->AgregarLicenciatura($row["carrera"], "UNAM - FCA", $row["generacion"], "", "", "", $idCurriculum, "t");
								}
								return 1;
							}
							else
							{
								//	Borramos el domicilio, persona y aspirante.
								$dom->BorrarDomicilio($idDomicilio);
								$this->EliminaPersona($idPersona);
								$sql = 	"DELETE FROM aspirante WHERE nocta ='". $numCuenta ."'";
								$db->Conectar();
								$db->Query($sql);
								$db->Cerrar();
							}
						}
						else
						{
								//	Borramos el domicilio y persona.
								$dom->BorrarDomicilio($idDomicilio);
								$this->EliminaPersona($idPersona);
						}
					}
					else
					{
						//	Borramos el aspirante y persona
						$this->EliminaPersona($idPersona);
						$sql = 	"DELETE FROM aspirante WHERE nocta ='". $numCuenta ."'";
						$db->Conectar();
						$db->Query($sql);
						$db->Cerrar();
						return 0;
					}
				}
				else
					return 0;
			}
			else
			{
				$db->Cerrar();
				return 0;
			}
		} 
		else
		{
			return -99;
		}
	}
	
	function BuscarAspirantes($edoCivil, $sexo, $edadMi, $edadMa, $viajar, $carrera,
					$experiencia, $habilidad, $idioma, $promedio, $zona, $semestre,
					$escolaridad)
	{
		if($edoCivil == "Indistinto" || $edoCivil == "")
		{
			$edoCivilArreglo[0] = "Soltero";
			$edoCivilArreglo[1] = "Casado";
		}
		else
		{
			$edoCivilArreglo[0] = $edoCivil;
		}
		if($sexo == "I" || $sexo == "")
		{
			$sexoArreglo[0] = "M";
			$sexoArreglo[1] = "F";
		}
		else
		{
			$sexoArreglo[0] = $sexo;
		}
		$select = "	SELECT DISTINCT a.nocta,  p.nombre, p.apellidopaterno, p.apellidomaterno, 
					c.idcurriculum FROM";
		
		$selectCount = "SELECT COUNT(DISTINCT a.nocta) AS Total FROM";
		
		$from .= " 	aspirante a, persona p, curriculum c, estudioslicenciatura e, 
					carrera ca";
		
		$sql .= " 
				WHERE a.idpersona = p.idpersona AND c.nocta = a.nocta AND 
				p.nombre <> '' AND c.objetivo <> '' 
				AND c.puestodeseado <> '' AND e.idcurriculum = c.idcurriculum AND
				ca.idcarrera = e.idcarrera AND e.semestre <> '' AND
				a.estadocivil IN('". implode("','", $edoCivilArreglo) ."') 
				AND sexo IN('". implode("','", $sexoArreglo) ."')
				
				";
		
		if($edadMi != "")
			$sql .= " AND AGE(fechanacimiento) >= ". $edadMi;
		if($edadMa != "")
			$sql .= " AND AGE(fechanacimiento) <= ". $edadMa;
		if($viajar != "")
			$sql .= " AND disponibilidadviajar = '". $viajar ."'";
		
		if($promedio != "")
		{
			$sql .= " AND e.promedio >= ". $promedio;
			$promedioAgregado = "true";
		}
		if($semestre != "")
		{
			$sql .= " AND e.semestre = ". $semestre;
			$semestreAgregado = "true";
		}
		if(isset($carrera))
		{
			$sql .= " AND e.idcarrera IN(". implode(",", $carrera) .")";
			if($promedio != "" && $promedioAgregado == "")
				$sql .= " AND e.promedio >= ". $promedio;
			
			if($semestre != "" && $semestreAgregado == "")
				$sql .= " AND e.semestre = ". $semestre;
			
		}
		if($zona != "")
		{
			$from .= ", domicilio d, estado_rep er";
			$sql .= "
					AND d.iddomicilio = a.iddomicilio 
					AND er.idestado = d.idestado 
					AND d.zona = '". $zona ."' ";
		}
		
		if($escolaridad != "")
		{
			$from .= ", cur_es";
			$sql .= " AND cur_es.idcurriculum = c.idcurriculum AND ";
			$sql .= " cur_es.tipoespecialidad = '". $escolaridad ."' ";
		}
		if($experiencia != "")
		{
			$from .= ", experiencialaboral el";
			$sql .= " AND el.idcurriculum = c.idcurriculum AND ((";
			$palabras = explode(" ", $experiencia);
			$contador = 0;
			foreach($palabras as $value)
			{
				if($contador != 0)
					$sql .= " OR ";
				$sql .= " lower(el.actividades) LIKE '%". strtolower($value) . "%'";
				$contador++;
			}
			$sql .= ") OR (";
			$contador = 0;
			foreach($palabras as $value)
			{
				if($contador != 0)
					$sql .= " OR ";
				$sql .= " lower(c.expconoc) LIKE '%". strtolower($value) . "%'";
				$contador++;
			}
			$sql .= "))";
		}

		if($idioma != "")
		{
			$from .= ", cur_id ci";
			$sql .= " AND ci.idcurriculum = c.idcurriculum";
			$sql .= " AND ci.ididioma IN(". $idioma .")";
		}

		$sql .= " AND c.estatuscurriculum = 'A'"; 
		
		$orderBy = " ORDER BY  p.apellidopaterno, p.apellidomaterno, p.nombre";
		return $select. $from. $sql. $orderBy  ."|". $selectCount. $from. $sql;
	}
	
	function ObtenerListaAspirantes($busqueda)
	{
		$sql = "SELECT * FROM aspirante a, persona p, curriculum c 
					WHERE a.idpersona = p.idpersona AND c.nocta = a.nocta";
		if($busqueda != "")
			$sql .= " AND a.nocta LIKE '". $busqueda ."'";
		$sql.= " ORDER BY p.apellidopaterno, p.apellidomaterno, p.nombre";
		return $sql; 
	}
	
	function CambiarOpciones($boletin, $taller, $estatus, $idCurriculum, $idAspirante)
	{
		if($taller == "t") 
		{
			$tall = new Taller();
			$tall->DesInscribirTaller("", $idAspirante);
		}
		else
			$taller = "f";
		
		if($boletin == "") $boletin = "f";
		
		$sql = "
				UPDATE aspirante
				SET
				noboletinarse = '". $boletin ."', ";
				
		if($boletin == "t")
			$sql .= "boletinarse = 'f',";
			
		$sql .= "
				notalleres = '". $taller ."'
				WHERE
				nocta = '". $idAspirante ."'"
				;
		$db = new DB();
		$db->Conectar();
		$db->Query($sql);
		$db->Cerrar();
		return $db->FilasAfectadas();
		$curr = new Curriculum();
		$curr->ActualizarStatusCurriculum($idCurriculum,  $estatus, "A");
	}
	
	function ObtenerEmails()
	{
		return "SELECT correoelectronico FROM persona p, aspirante a
				WHERE a.idpersona = p.idpersona";
	}
	
	function GenerarBoletin($fechaInicio, $fechaFin, $carrera)
	{
		return "SELECT DISTINCT a.nocta,  p.nombre, p.apellidopaterno, p.apellidomaterno, 
					c.idcurriculum, e.idcarrera, c.puestodeseado, a.sexo, 
					ca.descripcion AS carrera, age(fechanacimiento) AS edad, p.correoelectronico,
					horariotrabajo, a.estadocivil, d.tel1, d.tel2, e.promedio, 
					c.sueldodeseado, del_mun, disponibilidadviajar, callenumero, colonia, 
					del_mun, cp, ciudad, zona, er.descripcion AS estado
				FROM
					aspirante a, persona p, curriculum c, estudioslicenciatura e, 
					carrera ca, domicilio d, estado_rep er
				WHERE 
					a.idpersona = p.idpersona AND c.nocta = a.nocta AND 
					p.nombre <> '' AND c.objetivo <> '' 
					AND c.puestodeseado <> '' AND e.idcurriculum = c.idcurriculum AND
					ca.idcarrera = e.idcarrera AND d.iddomicilio = a.iddomicilio AND
					er.idestado = d.idestado AND e.semestre <> ''
					AND boletinarse ='t' AND (CURRENT_DATE - uactualizacion) <= 31
					AND a.fecharegistro BETWEEN '". $fechaInicio ."' AND
					'". $fechaFin ."' AND e.idcarrera =". $carrera ."
					AND c.estatuscurriculum = 'A'
					ORDER BY 
					e.idcarrera, p.apellidopaterno, p.apellidomaterno, p.nombre";
	}
	
	function ValidaCurriculumLleno($idAspirante, $idCurriculum)
	{
			$domicilio = new Domicilio();
			$curr = new Curriculum();
			$this->ObtenerDatosPersonales($idAspirante);
			$domicilio->ObtenerDomicilio($this->_idDomicilio);
			$objetivo = $curr->ObtenerObjetivo($idCurriculum);
			$curr->ObtenerCurriculum($idCurriculum);
			if(	$domicilio->_calleNumero == "" || $objetivo == ""  || $curr->_horarioTrabajo == "" || $curr->CantidadLicenciaturas($idCurriculum) <= 0 || $curr->_estatusCurriculum == "I")
					return false;
			else
					return true;
	}
}
?>
